home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 24 / AACD 24.iso / AACD / Programming / gcc-2.95.3-3 / info / g77.info-1 < prev    next >
Encoding:
GNU Info File  |  2001-07-15  |  46.2 KB  |  979 lines

  1. This is Info file f/g77.info, produced by Makeinfo version 1.68 from
  2. the input file ./f/g77.texi.
  3.  
  4. INFO-DIR-SECTION Programming
  5. START-INFO-DIR-ENTRY
  6. * g77: (g77).                  The GNU Fortran compiler.
  7. END-INFO-DIR-ENTRY
  8.    This file documents the use and the internals of the GNU Fortran
  9. (`g77') compiler.  It corresponds to the GCC-2.95 version of `g77'.
  10.  
  11.    Published by the Free Software Foundation 59 Temple Place - Suite 330
  12. Boston, MA 02111-1307 USA
  13.  
  14.    Copyright (C) 1995-1999 Free Software Foundation, Inc.
  15.  
  16.    Permission is granted to make and distribute verbatim copies of this
  17. manual provided the copyright notice and this permission notice are
  18. preserved on all copies.
  19.  
  20.    Permission is granted to copy and distribute modified versions of
  21. this manual under the conditions for verbatim copying, provided also
  22. that the sections entitled "GNU General Public License," "Funding for
  23. Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are
  24. included exactly as in the original, and provided that the entire
  25. resulting derived work is distributed under the terms of a permission
  26. notice identical to this one.
  27.  
  28.    Permission is granted to copy and distribute translations of this
  29. manual into another language, under the above conditions for modified
  30. versions, except that the sections entitled "GNU General Public
  31. License," "Funding for Free Software," and "Protect Your Freedom--Fight
  32. `Look And Feel'", and this permission notice, may be included in
  33. translations approved by the Free Software Foundation instead of in the
  34. original English.
  35.  
  36.    Contributed by James Craig Burley (<craig@jcb-sc.com>).  Inspired by
  37. a first pass at translating `g77-0.5.16/f/DOC' that was contributed to
  38. Craig by David Ronis (<ronis@onsager.chem.mcgill.ca>).
  39.  
  40. 
  41. File: g77.info,  Node: Top,  Next: Copying,  Up: (DIR)
  42.  
  43. Introduction
  44. ************
  45.  
  46.    This manual documents how to run, install and port `g77', as well as
  47. its new features and incompatibilities, and how to report bugs.  It
  48. corresponds to the GCC-2.95 version of `g77'.
  49.  
  50. * Menu:
  51.  
  52. * Copying::         GNU General Public License says
  53.                     how you can copy and share GNU Fortran.
  54. * Contributors::    People who have contributed to GNU Fortran.
  55. * Funding::         How to help assure continued work for free software.
  56. * Funding GNU Fortran::  How to help assure continued work on GNU Fortran.
  57. * Look and Feel::   Protect your freedom--fight "look and feel".
  58.  
  59. * Getting Started:: Finding your way around this manual.
  60. * What is GNU Fortran?::  How `g77' fits into the universe.
  61. * G77 and GCC::     You can compile Fortran, C, or other programs.
  62. * Invoking G77::    Command options supported by `g77'.
  63. * News::            News about recent releases of `g77'.
  64. * Changes::         User-visible changes to recent releases of `g77'.
  65. * Language::        The GNU Fortran language.
  66. * Compiler::        The GNU Fortran compiler.
  67. * Other Dialects::  Dialects of Fortran supported by `g77'.
  68. * Other Compilers:: Fortran compilers other than `g77'.
  69. * Other Languages:: Languages other than Fortran.
  70. * Installation::    How to configure, compile and install GNU Fortran.
  71. * Debugging and Interfacing::  How `g77' generates code.
  72. * Collected Fortran Wisdom::  How to avoid Trouble.
  73. * Trouble::         If you have trouble with GNU Fortran.
  74. * Open Questions::  Things we'd like to know.
  75. * Bugs::            How, why, and where to report bugs.
  76. * Service::         How to find suppliers of support for GNU Fortran.
  77.  
  78. * Adding Options::  Guidance on teaching `g77' about new options.
  79. * Projects::        Projects for `g77' internals hackers.
  80. * Front End::       Design and implementation of the `g77' front end.
  81.  
  82. * M: Diagnostics.   Diagnostics produced by `g77'.
  83.  
  84. * Index::           Index of concepts and symbol names.
  85.  
  86. 
  87. File: g77.info,  Node: Copying,  Next: Contributors,  Prev: Top,  Up: Top
  88.  
  89. GNU GENERAL PUBLIC LICENSE
  90. **************************
  91.  
  92.                          Version 2, June 1991
  93.  
  94.      Copyright (C) 1989, 1991 Free Software Foundation, Inc.
  95.      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  96.      
  97.      Everyone is permitted to copy and distribute verbatim copies
  98.      of this license document, but changing it is not allowed.
  99.  
  100. Preamble
  101. ========
  102.  
  103.      The licenses for most software are designed to take away your
  104. freedom to share and change it.  By contrast, the GNU General Public
  105. License is intended to guarantee your freedom to share and change free
  106. software--to make sure the software is free for all its users.  This
  107. General Public License applies to most of the Free Software
  108. Foundation's software and to any other program whose authors commit to
  109. using it.  (Some other Free Software Foundation software is covered by
  110. the GNU Library General Public License instead.)  You can apply it to
  111. your programs, too.
  112.  
  113.      When we speak of free software, we are referring to freedom, not
  114. price.  Our General Public Licenses are designed to make sure that you
  115. have the freedom to distribute copies of free software (and charge for
  116. this service if you wish), that you receive source code or can get it
  117. if you want it, that you can change the software or use pieces of it in
  118. new free programs; and that you know you can do these things.
  119.  
  120.      To protect your rights, we need to make restrictions that forbid
  121. anyone to deny you these rights or to ask you to surrender the rights.
  122. These restrictions translate to certain responsibilities for you if you
  123. distribute copies of the software, or if you modify it.
  124.  
  125.      For example, if you distribute copies of such a program, whether
  126. gratis or for a fee, you must give the recipients all the rights that
  127. you have.  You must make sure that they, too, receive or can get the
  128. source code.  And you must show them these terms so they know their
  129. rights.
  130.  
  131.      We protect your rights with two steps: (1) copyright the software,
  132. and (2) offer you this license which gives you legal permission to copy,
  133. distribute and/or modify the software.
  134.  
  135.      Also, for each author's protection and ours, we want to make
  136. certain that everyone understands that there is no warranty for this
  137. free software.  If the software is modified by someone else and passed
  138. on, we want its recipients to know that what they have is not the
  139. original, so that any problems introduced by others will not reflect on
  140. the original authors' reputations.
  141.  
  142.      Finally, any free program is threatened constantly by software
  143. patents.  We wish to avoid the danger that redistributors of a free
  144. program will individually obtain patent licenses, in effect making the
  145. program proprietary.  To prevent this, we have made it clear that any
  146. patent must be licensed for everyone's free use or not licensed at all.
  147.  
  148.      The precise terms and conditions for copying, distribution and
  149. modification follow.
  150.  
  151.     TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  152.  
  153.   0. This License applies to any program or other work which contains a
  154.      notice placed by the copyright holder saying it may be distributed
  155.      under the terms of this General Public License.  The "Program",
  156.      below, refers to any such program or work, and a "work based on
  157.      the Program" means either the Program or any derivative work under
  158.      copyright law: that is to say, a work containing the Program or a
  159.      portion of it, either verbatim or with modifications and/or
  160.      translated into another language.  (Hereinafter, translation is
  161.      included without limitation in the term "modification".)  Each
  162.      licensee is addressed as "you".
  163.  
  164.      Activities other than copying, distribution and modification are
  165.      not covered by this License; they are outside its scope.  The act
  166.      of running the Program is not restricted, and the output from the
  167.      Program is covered only if its contents constitute a work based on
  168.      the Program (independent of having been made by running the
  169.      Program).  Whether that is true depends on what the Program does.
  170.  
  171.   1. You may copy and distribute verbatim copies of the Program's
  172.      source code as you receive it, in any medium, provided that you
  173.      conspicuously and appropriately publish on each copy an appropriate
  174.      copyright notice and disclaimer of warranty; keep intact all the
  175.      notices that refer to this License and to the absence of any
  176.      warranty; and give any other recipients of the Program a copy of
  177.      this License along with the Program.
  178.  
  179.      You may charge a fee for the physical act of transferring a copy,
  180.      and you may at your option offer warranty protection in exchange
  181.      for a fee.
  182.  
  183.   2. You may modify your copy or copies of the Program or any portion
  184.      of it, thus forming a work based on the Program, and copy and
  185.      distribute such modifications or work under the terms of Section 1
  186.      above, provided that you also meet all of these conditions:
  187.  
  188.        a. You must cause the modified files to carry prominent notices
  189.           stating that you changed the files and the date of any change.
  190.  
  191.        b. You must cause any work that you distribute or publish, that
  192.           in whole or in part contains or is derived from the Program
  193.           or any part thereof, to be licensed as a whole at no charge
  194.           to all third parties under the terms of this License.
  195.  
  196.        c. If the modified program normally reads commands interactively
  197.           when run, you must cause it, when started running for such
  198.           interactive use in the most ordinary way, to print or display
  199.           an announcement including an appropriate copyright notice and
  200.           a notice that there is no warranty (or else, saying that you
  201.           provide a warranty) and that users may redistribute the
  202.           program under these conditions, and telling the user how to
  203.           view a copy of this License.  (Exception: if the Program
  204.           itself is interactive but does not normally print such an
  205.           announcement, your work based on the Program is not required
  206.           to print an announcement.)
  207.  
  208.      These requirements apply to the modified work as a whole.  If
  209.      identifiable sections of that work are not derived from the
  210.      Program, and can be reasonably considered independent and separate
  211.      works in themselves, then this License, and its terms, do not
  212.      apply to those sections when you distribute them as separate
  213.      works.  But when you distribute the same sections as part of a
  214.      whole which is a work based on the Program, the distribution of
  215.      the whole must be on the terms of this License, whose permissions
  216.      for other licensees extend to the entire whole, and thus to each
  217.      and every part regardless of who wrote it.
  218.  
  219.      Thus, it is not the intent of this section to claim rights or
  220.      contest your rights to work written entirely by you; rather, the
  221.      intent is to exercise the right to control the distribution of
  222.      derivative or collective works based on the Program.
  223.  
  224.      In addition, mere aggregation of another work not based on the
  225.      Program with the Program (or with a work based on the Program) on
  226.      a volume of a storage or distribution medium does not bring the
  227.      other work under the scope of this License.
  228.  
  229.   3. You may copy and distribute the Program (or a work based on it,
  230.      under Section 2) in object code or executable form under the terms
  231.      of Sections 1 and 2 above provided that you also do one of the
  232.      following:
  233.  
  234.        a. Accompany it with the complete corresponding machine-readable
  235.           source code, which must be distributed under the terms of
  236.           Sections 1 and 2 above on a medium customarily used for
  237.           software interchange; or,
  238.  
  239.        b. Accompany it with a written offer, valid for at least three
  240.           years, to give any third party, for a charge no more than your
  241.           cost of physically performing source distribution, a complete
  242.           machine-readable copy of the corresponding source code, to be
  243.           distributed under the terms of Sections 1 and 2 above on a
  244.           medium customarily used for software interchange; or,
  245.  
  246.        c. Accompany it with the information you received as to the offer
  247.           to distribute corresponding source code.  (This alternative is
  248.           allowed only for noncommercial distribution and only if you
  249.           received the program in object code or executable form with
  250.           such an offer, in accord with Subsection b above.)
  251.  
  252.      The source code for a work means the preferred form of the work for
  253.      making modifications to it.  For an executable work, complete
  254.      source code means all the source code for all modules it contains,
  255.      plus any associated interface definition files, plus the scripts
  256.      used to control compilation and installation of the executable.
  257.      However, as a special exception, the source code distributed need
  258.      not include anything that is normally distributed (in either
  259.      source or binary form) with the major components (compiler,
  260.      kernel, and so on) of the operating system on which the executable
  261.      runs, unless that component itself accompanies the executable.
  262.  
  263.      If distribution of executable or object code is made by offering
  264.      access to copy from a designated place, then offering equivalent
  265.      access to copy the source code from the same place counts as
  266.      distribution of the source code, even though third parties are not
  267.      compelled to copy the source along with the object code.
  268.  
  269.   4. You may not copy, modify, sublicense, or distribute the Program
  270.      except as expressly provided under this License.  Any attempt
  271.      otherwise to copy, modify, sublicense or distribute the Program is
  272.      void, and will automatically terminate your rights under this
  273.      License.  However, parties who have received copies, or rights,
  274.      from you under this License will not have their licenses
  275.      terminated so long as such parties remain in full compliance.
  276.  
  277.   5. You are not required to accept this License, since you have not
  278.      signed it.  However, nothing else grants you permission to modify
  279.      or distribute the Program or its derivative works.  These actions
  280.      are prohibited by law if you do not accept this License.
  281.      Therefore, by modifying or distributing the Program (or any work
  282.      based on the Program), you indicate your acceptance of this
  283.      License to do so, and all its terms and conditions for copying,
  284.      distributing or modifying the Program or works based on it.
  285.  
  286.   6. Each time you redistribute the Program (or any work based on the
  287.      Program), the recipient automatically receives a license from the
  288.      original licensor to copy, distribute or modify the Program
  289.      subject to these terms and conditions.  You may not impose any
  290.      further restrictions on the recipients' exercise of the rights
  291.      granted herein.  You are not responsible for enforcing compliance
  292.      by third parties to this License.
  293.  
  294.   7. If, as a consequence of a court judgment or allegation of patent
  295.      infringement or for any other reason (not limited to patent
  296.      issues), conditions are imposed on you (whether by court order,
  297.      agreement or otherwise) that contradict the conditions of this
  298.      License, they do not excuse you from the conditions of this
  299.      License.  If you cannot distribute so as to satisfy simultaneously
  300.      your obligations under this License and any other pertinent
  301.      obligations, then as a consequence you may not distribute the
  302.      Program at all.  For example, if a patent license would not permit
  303.      royalty-free redistribution of the Program by all those who
  304.      receive copies directly or indirectly through you, then the only
  305.      way you could satisfy both it and this License would be to refrain
  306.      entirely from distribution of the Program.
  307.  
  308.      If any portion of this section is held invalid or unenforceable
  309.      under any particular circumstance, the balance of the section is
  310.      intended to apply and the section as a whole is intended to apply
  311.      in other circumstances.
  312.  
  313.      It is not the purpose of this section to induce you to infringe any
  314.      patents or other property right claims or to contest validity of
  315.      any such claims; this section has the sole purpose of protecting
  316.      the integrity of the free software distribution system, which is
  317.      implemented by public license practices.  Many people have made
  318.      generous contributions to the wide range of software distributed
  319.      through that system in reliance on consistent application of that
  320.      system; it is up to the author/donor to decide if he or she is
  321.      willing to distribute software through any other system and a
  322.      licensee cannot impose that choice.
  323.  
  324.      This section is intended to make thoroughly clear what is believed
  325.      to be a consequence of the rest of this License.
  326.  
  327.   8. If the distribution and/or use of the Program is restricted in
  328.      certain countries either by patents or by copyrighted interfaces,
  329.      the original copyright holder who places the Program under this
  330.      License may add an explicit geographical distribution limitation
  331.      excluding those countries, so that distribution is permitted only
  332.      in or among countries not thus excluded.  In such case, this
  333.      License incorporates the limitation as if written in the body of
  334.      this License.
  335.  
  336.   9. The Free Software Foundation may publish revised and/or new
  337.      versions of the General Public License from time to time.  Such
  338.      new versions will be similar in spirit to the present version, but
  339.      may differ in detail to address new problems or concerns.
  340.  
  341.      Each version is given a distinguishing version number.  If the
  342.      Program specifies a version number of this License which applies
  343.      to it and "any later version", you have the option of following
  344.      the terms and conditions either of that version or of any later
  345.      version published by the Free Software Foundation.  If the Program
  346.      does not specify a version number of this License, you may choose
  347.      any version ever published by the Free Software Foundation.
  348.  
  349.  10. If you wish to incorporate parts of the Program into other free
  350.      programs whose distribution conditions are different, write to the
  351.      author to ask for permission.  For software which is copyrighted
  352.      by the Free Software Foundation, write to the Free Software
  353.      Foundation; we sometimes make exceptions for this.  Our decision
  354.      will be guided by the two goals of preserving the free status of
  355.      all derivatives of our free software and of promoting the sharing
  356.      and reuse of software generally.
  357.  
  358.                                 NO WARRANTY
  359.  
  360.  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
  361.      WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
  362.      LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
  363.      HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
  364.      WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
  365.      NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  366.      FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE
  367.      QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
  368.      PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
  369.      SERVICING, REPAIR OR CORRECTION.
  370.  
  371.  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
  372.      WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
  373.      MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
  374.      LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
  375.      INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
  376.      INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
  377.      DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
  378.      OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
  379.      OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
  380.      ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  381.  
  382.                       END OF TERMS AND CONDITIONS
  383.  
  384. How to Apply These Terms to Your New Programs
  385. =============================================
  386.  
  387.      If you develop a new program, and you want it to be of the greatest
  388. possible use to the public, the best way to achieve this is to make it
  389. free software which everyone can redistribute and change under these
  390. terms.
  391.  
  392.      To do so, attach the following notices to the program.  It is
  393. safest to attach them to the start of each source file to most
  394. effectively convey the exclusion of warranty; and each file should have
  395. at least the "copyright" line and a pointer to where the full notice is
  396. found.
  397.  
  398.      ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
  399.      Copyright (C) 19YY  NAME OF AUTHOR
  400.      
  401.      This program is free software; you can redistribute it and/or modify
  402.      it under the terms of the GNU General Public License as published by
  403.      the Free Software Foundation; either version 2 of the License, or
  404.      (at your option) any later version.
  405.      
  406.      This program is distributed in the hope that it will be useful,
  407.      but WITHOUT ANY WARRANTY; without even the implied warranty of
  408.      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  409.      GNU General Public License for more details.
  410.      
  411.      You should have received a copy of the GNU General Public License
  412.      along with this program; if not, write to the Free Software
  413.      Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  414.  
  415.    Also add information on how to contact you by electronic and paper
  416. mail.
  417.  
  418.    If the program is interactive, make it output a short notice like
  419. this when it starts in an interactive mode:
  420.  
  421.      Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
  422.      Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
  423.      type `show w'.
  424.      This is free software, and you are welcome to redistribute it
  425.      under certain conditions; type `show c' for details.
  426.  
  427.    The hypothetical commands `show w' and `show c' should show the
  428. appropriate parts of the General Public License.  Of course, the
  429. commands you use may be called something other than `show w' and `show
  430. c'; they could even be mouse-clicks or menu items--whatever suits your
  431. program.
  432.  
  433.    You should also get your employer (if you work as a programmer) or
  434. your school, if any, to sign a "copyright disclaimer" for the program,
  435. if necessary.  Here is a sample; alter the names:
  436.  
  437.      Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  438.      `Gnomovision' (which makes passes at compilers) written by James Hacker.
  439.      
  440.      SIGNATURE OF TY COON, 1 April 1989
  441.      Ty Coon, President of Vice
  442.  
  443.    This General Public License does not permit incorporating your
  444. program into proprietary programs.  If your program is a subroutine
  445. library, you may consider it more useful to permit linking proprietary
  446. applications with the library.  If this is what you want to do, use the
  447. GNU Library General Public License instead of this License.
  448.  
  449. 
  450. File: g77.info,  Node: Contributors,  Next: Funding,  Prev: Copying,  Up: Top
  451.  
  452. Contributors to GNU Fortran
  453. ***************************
  454.  
  455.    In addition to James Craig Burley, who wrote the front end, many
  456. people have helped create and improve GNU Fortran.
  457.  
  458.    * The packaging and compiler portions of GNU Fortran are based
  459.      largely on the GNU CC compiler.  *Note Contributors to GNU CC:
  460.      (gcc)Contributors, for more information.
  461.  
  462.    * The run-time library used by GNU Fortran is a repackaged version
  463.      of the `libf2c' library (combined from the `libF77' and `libI77'
  464.      libraries) provided as part of `f2c', available for free from
  465.      `netlib' sites on the Internet.
  466.  
  467.    * Cygnus Support and The Free Software Foundation contributed
  468.      significant money and/or equipment to Craig's efforts.
  469.  
  470.    * The following individuals served as alpha testers prior to `g77''s
  471.      public release.  This work consisted of testing, researching,
  472.      sometimes debugging, and occasionally providing small amounts of
  473.      code and fixes for `g77', plus offering plenty of helpful advice
  474.      to Craig:
  475.  
  476.           Jonathan Corbet
  477.  
  478.           Dr. Mark Fernyhough
  479.  
  480.           Takafumi Hayashi (The University of
  481.           Aizu)--<takafumi@u-aizu.ac.jp>
  482.  
  483.           Kate Hedstrom
  484.  
  485.           Michel Kern (INRIA and Rice
  486.           University)--<Michel.Kern@inria.fr>
  487.  
  488.           Dr. A. O. V. Le Blanc
  489.  
  490.           Dave Love
  491.  
  492.           Rick Lutowski
  493.  
  494.           Toon Moene
  495.  
  496.           Rick Niles
  497.  
  498.           Derk Reefman
  499.  
  500.           Wayne K. Schroll
  501.  
  502.           Bill Thorson
  503.  
  504.           Pedro A. M. Vazquez
  505.  
  506.           Ian Watson
  507.  
  508.    * Scott Snyder (<snyder@d0sgif.fnal.gov>) provided the patch to add
  509.      rudimentary support for `INTEGER*1', `INTEGER*2', and `LOGICAL*1'.
  510.      This inspired Craig to add further support, even though the
  511.      resulting support would still be incomplete, because version 0.6
  512.      is still a ways off.
  513.  
  514.    * David Ronis (<ronis@onsager.chem.mcgill.ca>) inspired and
  515.      encouraged Craig to rewrite the documentation in texinfo format by
  516.      contributing a first pass at a translation of the old
  517.      `g77-0.5.16/f/DOC' file.
  518.  
  519.    * Toon Moene (<toon@moene.indiv.nluug.nl>) performed some analysis
  520.      of generated code as part of an overall project to improve `g77'
  521.      code generation to at least be as good as `f2c' used in
  522.      conjunction with `gcc'.  So far, this has resulted in the three,
  523.      somewhat experimental, options added by `g77' to the `gcc'
  524.      compiler and its back end.
  525.  
  526.      (These, in turn, have made their way into the `egcs' version of
  527.      the compiler, and do not exist in `gcc' version 2.8 or versions of
  528.      `g77' based on that version of `gcc'.)
  529.  
  530.    * John Carr (<jfc@mit.edu>) wrote the alias analysis improvements.
  531.  
  532.    * Thanks to Mary Cortani and the staff at Craftwork Solutions
  533.      (<support@craftwork.com>) for all of their support.
  534.  
  535.    * Many other individuals have helped debug, test, and improve `g77'
  536.      over the past several years, and undoubtedly more people will be
  537.      doing so in the future.  If you have done so, and would like to
  538.      see your name listed in the above list, please ask!  The default
  539.      is that people wish to remain anonymous.
  540.  
  541. 
  542. File: g77.info,  Node: Funding,  Next: Funding GNU Fortran,  Prev: Contributors,  Up: Top
  543.  
  544. Funding Free Software
  545. *********************
  546.  
  547.    If you want to have more free software a few years from now, it makes
  548. sense for you to help encourage people to contribute funds for its
  549. development.  The most effective approach known is to encourage
  550. commercial redistributors to donate.
  551.  
  552.    Users of free software systems can boost the pace of development by
  553. encouraging for-a-fee distributors to donate part of their selling price
  554. to free software developers--the Free Software Foundation, and others.
  555.  
  556.    The way to convince distributors to do this is to demand it and
  557. expect it from them.  So when you compare distributors, judge them
  558. partly by how much they give to free software development.  Show
  559. distributors they must compete to be the one who gives the most.
  560.  
  561.    To make this approach work, you must insist on numbers that you can
  562. compare, such as, "We will donate ten dollars to the Frobnitz project
  563. for each disk sold."  Don't be satisfied with a vague promise, such as
  564. "A portion of the profits are donated," since it doesn't give a basis
  565. for comparison.
  566.  
  567.    Even a precise fraction "of the profits from this disk" is not very
  568. meaningful, since creative accounting and unrelated business decisions
  569. can greatly alter what fraction of the sales price counts as profit.
  570. If the price you pay is $50, ten percent of the profit is probably less
  571. than a dollar; it might be a few cents, or nothing at all.
  572.  
  573.    Some redistributors do development work themselves.  This is useful
  574. too; but to keep everyone honest, you need to inquire how much they do,
  575. and what kind.  Some kinds of development make much more long-term
  576. difference than others.  For example, maintaining a separate version of
  577. a program contributes very little; maintaining the standard version of a
  578. program for the whole community contributes much.  Easy new ports
  579. contribute little, since someone else would surely do them; difficult
  580. ports such as adding a new CPU to the GNU C compiler contribute more;
  581. major new features or packages contribute the most.
  582.  
  583.    By establishing the idea that supporting further development is "the
  584. proper thing to do" when distributing free software for a fee, we can
  585. assure a steady flow of resources into making more free software.
  586.  
  587.      Copyright (C) 1994 Free Software Foundation, Inc.
  588.      Verbatim copying and redistribution of this section is permitted
  589.      without royalty; alteration is not permitted.
  590.  
  591. 
  592. File: g77.info,  Node: Funding GNU Fortran,  Next: Look and Feel,  Prev: Funding,  Up: Top
  593.  
  594. Funding GNU Fortran
  595. *******************
  596.  
  597.    Work on GNU Fortran is still being done mostly by its author, James
  598. Craig Burley (<craig@jcb-sc.com>), who is a volunteer for, not an
  599. employee of, the Free Software Foundation (FSF).  (He has a web page at
  600. `http://world.std.com/%7Eburley'.)
  601.  
  602.    As with other GNU software, funding is important because it can pay
  603. for needed equipment, personnel, and so on.
  604.  
  605.    The FSF provides information on the best way to fund ongoing
  606. development of GNU software (such as GNU Fortran) in documents such as
  607. the "GNUS Bulletin".  Email <gnu@gnu.org> for information on funding
  608. the FSF.
  609.  
  610.    To fund specific GNU Fortran work in particular, the FSF might
  611. provide a means for that, but the FSF does not provide direct funding
  612. to the author of GNU Fortran to continue his work.  The FSF has
  613. employee salary restrictions that can be incompatible with the
  614. financial needs of some volunteers, who therefore choose to remain
  615. volunteers and thus be able to be free to do contract work and
  616. otherwise make their own schedules for doing GNU work.
  617.  
  618.    Still, funding the FSF at least indirectly benefits work on specific
  619. projects like GNU Fortran because it ensures the continuing operation
  620. of the FSF offices, their workstations, their network connections, and
  621. so on, which are invaluable to volunteers.  (Similarly, hiring Cygnus
  622. Support can help a project like GNU Fortran--Cygnus has been a
  623. long-time donor of equipment usage to the author of GNU Fortran, and
  624. this too has been invaluable--see *Note Contributors::..)
  625.  
  626.    Currently, the only way to directly fund the author of GNU Fortran
  627. in his work on that project is to hire him for the work you want him to
  628. do, or donate money to him.  Several people have done this already,
  629. with the result that he has not needed to immediately find contract
  630. work on a few occasions.  If more people did this, he would be able to
  631. plan on not doing contract work for many months and could thus devote
  632. that time to work on projects (such as the planned changes for 0.6)
  633. that require longer timeframes to complete.  For the latest information
  634. on the status of the author, do `finger -l burley@gnu.org' on a UNIX
  635. system (or any system with a command like UNIX `finger').
  636.  
  637.    Another important way to support work on GNU Fortran is to volunteer
  638. to help out.  Work is needed on documentation, testing, porting to
  639. various machines, and in some cases, coding (although major changes
  640. planned for version 0.6 make it difficult to add manpower to this area).
  641. Email <gcc@gcc.gnu.org> to volunteer for this work.
  642.  
  643.    *Note Funding Free Software: Funding, for more information.
  644.  
  645. 
  646. File: g77.info,  Node: Look and Feel,  Next: Getting Started,  Prev: Funding GNU Fortran,  Up: Top
  647.  
  648. Protect Your Freedom--Fight "Look And Feel"
  649. *******************************************
  650.  
  651.    To preserve the ability to write free software, including
  652. replacements for proprietary software, authors must be free to
  653. replicate the user interface to which users of existing software have
  654. become accustomed.
  655.  
  656.    *Note Protect Your Freedom--Fight "Look And Feel": (gcc)Look and
  657. Feel, for more information.
  658.  
  659. 
  660. File: g77.info,  Node: Getting Started,  Next: What is GNU Fortran?,  Prev: Look and Feel,  Up: Top
  661.  
  662. Getting Started
  663. ***************
  664.  
  665.    If you don't need help getting started reading the portions of this
  666. manual that are most important to you, you should skip this portion of
  667. the manual.
  668.  
  669.    If you are new to compilers, especially Fortran compilers, or new to
  670. how compilers are structured under UNIX and UNIX-like systems, you'll
  671. want to see *Note What is GNU Fortran?::..
  672.  
  673.    If you are new to GNU compilers, or have used only one GNU compiler
  674. in the past and not had to delve into how it lets you manage various
  675. versions and configurations of `gcc', you should see *Note G77 and
  676. GCC::..
  677.  
  678.    Everyone except experienced `g77' users should see *Note Invoking
  679. G77::..
  680.  
  681.    If you're acquainted with previous versions of `g77', you should see
  682. *Note News About GNU Fortran: News..  Further, if you've actually used
  683. previous versions of `g77', especially if you've written or modified
  684. Fortran code to be compiled by previous versions of `g77', you should
  685. see *Note Changes::..
  686.  
  687.    If you intend to write or otherwise compile code that is not already
  688. strictly conforming ANSI FORTRAN 77--and this is probably everyone--you
  689. should see *Note Language::..
  690.  
  691.    If you don't already have `g77' installed on your system, you must
  692. see *Note Installation::..
  693.  
  694.    If you run into trouble getting Fortran code to compile, link, run,
  695. or work properly, you might find answers if you see *Note Debugging and
  696. Interfacing::., see *Note Collected Fortran Wisdom::., and see *Note
  697. Trouble::..  You might also find that the problems you are encountering
  698. are bugs in `g77'--see *Note Bugs::., for information on reporting
  699. them, after reading the other material.
  700.  
  701.    If you need further help with `g77', or with freely redistributable
  702. software in general, see *Note Service::..
  703.  
  704.    If you would like to help the `g77' project, see *Note Funding GNU
  705. Fortran::., for information on helping financially, and see *Note
  706. Projects::., for information on helping in other ways.
  707.  
  708.    If you're generally curious about the future of `g77', see *Note
  709. Projects::..  If you're curious about its past, see *Note
  710. Contributors::., and see *Note Funding GNU Fortran::..
  711.  
  712.    To see a few of the questions maintainers of `g77' have, and that
  713. you might be able to answer, see *Note Open Questions::..
  714.  
  715. 
  716. File: g77.info,  Node: What is GNU Fortran?,  Next: G77 and GCC,  Prev: Getting Started,  Up: Top
  717.  
  718. What is GNU Fortran?
  719. ********************
  720.  
  721.    GNU Fortran, or `g77', is designed initially as a free replacement
  722. for, or alternative to, the UNIX `f77' command.  (Similarly, `gcc' is
  723. designed as a replacement for the UNIX `cc' command.)
  724.  
  725.    `g77' also is designed to fit in well with the other fine GNU
  726. compilers and tools.
  727.  
  728.    Sometimes these design goals conflict--in such cases, resolution
  729. often is made in favor of fitting in well with Project GNU.  These
  730. cases are usually identified in the appropriate sections of this manual.
  731.  
  732.    As compilers, `g77', `gcc', and `f77' share the following
  733. characteristics:
  734.  
  735.    * They read a user's program, stored in a file and containing
  736.      instructions written in the appropriate language (Fortran, C, and
  737.      so on).  This file contains "source code".
  738.  
  739.    * They translate the user's program into instructions a computer can
  740.      carry out more quickly than it takes to translate the instructions
  741.      in the first place.  These instructions are called "machine
  742.      code"--code designed to be efficiently translated and processed by
  743.      a machine such as a computer.  Humans usually aren't as good
  744.      writing machine code as they are at writing Fortran or C, because
  745.      it is easy to make tiny mistakes writing machine code.  When
  746.      writing Fortran or C, it is easy to make big mistakes.
  747.  
  748.    * They provide information in the generated machine code that can
  749.      make it easier to find bugs in the program (using a debugging
  750.      tool, called a "debugger", such as `gdb').
  751.  
  752.    * They locate and gather machine code already generated to perform
  753.      actions requested by statements in the user's program.  This
  754.      machine code is organized into "libraries" and is located and
  755.      gathered during the "link" phase of the compilation process.
  756.      (Linking often is thought of as a separate step, because it can be
  757.      directly invoked via the `ld' command.  However, the `g77' and
  758.      `gcc' commands, as with most compiler commands, automatically
  759.      perform the linking step by calling on `ld' directly, unless asked
  760.      to not do so by the user.)
  761.  
  762.    * They attempt to diagnose cases where the user's program contains
  763.      incorrect usages of the language.  The "diagnostics" produced by
  764.      the compiler indicate the problem and the location in the user's
  765.      source file where the problem was first noticed.  The user can use
  766.      this information to locate and fix the problem.  (Sometimes an
  767.      incorrect usage of the language leads to a situation where the
  768.      compiler can no longer make any sense of what follows--while a
  769.      human might be able to--and thus ends up complaining about many
  770.      "problems" it encounters that, in fact, stem from just one
  771.      problem, usually the first one reported.)
  772.  
  773.    * They attempt to diagnose cases where the user's program contains a
  774.      correct usage of the language, but instructs the computer to do
  775.      something questionable.  These diagnostics often are in the form
  776.      of "warnings", instead of the "errors" that indicate incorrect
  777.      usage of the language.
  778.  
  779.    How these actions are performed is generally under the control of
  780. the user.  Using command-line options, the user can specify how
  781. persnickety the compiler is to be regarding the program (whether to
  782. diagnose questionable usage of the language), how much time to spend
  783. making the generated machine code run faster, and so on.
  784.  
  785.    `g77' consists of several components:
  786.  
  787.    * A modified version of the `gcc' command, which also might be
  788.      installed as the system's `cc' command.  (In many cases, `cc'
  789.      refers to the system's "native" C compiler, which might be a
  790.      non-GNU compiler, or an older version of `gcc' considered more
  791.      stable or that is used to build the operating system kernel.)
  792.  
  793.    * The `g77' command itself, which also might be installed as the
  794.      system's `f77' command.
  795.  
  796.    * The `libg2c' run-time library.  This library contains the machine
  797.      code needed to support capabilities of the Fortran language that
  798.      are not directly provided by the machine code generated by the
  799.      `g77' compilation phase.
  800.  
  801.      `libg2c' is just the unique name `g77' gives to its version of
  802.      `libf2c' to distinguish it from any copy of `libf2c' installed
  803.      from `f2c' (or versions of `g77' that built `libf2c' under that
  804.      same name) on the system.
  805.  
  806.      The maintainer of `libf2c' currently is <dmg@bell-labs.com>.
  807.  
  808.    * The compiler itself, internally named `f771'.
  809.  
  810.      Note that `f771' does not generate machine code directly--it
  811.      generates "assembly code" that is a more readable form of machine
  812.      code, leaving the conversion to actual machine code to an
  813.      "assembler", usually named `as'.
  814.  
  815.    `gcc' is often thought of as "the C compiler" only, but it does more
  816. than that.  Based on command-line options and the names given for files
  817. on the command line, `gcc' determines which actions to perform,
  818. including preprocessing, compiling (in a variety of possible
  819. languages), assembling, and linking.
  820.  
  821.    For example, the command `gcc foo.c' "drives" the file `foo.c'
  822. through the preprocessor `cpp', then the C compiler (internally named
  823. `cc1'), then the assembler (usually `as'), then the linker (`ld'),
  824. producing an executable program named `a.out' (on UNIX systems).
  825.  
  826.    As another example, the command `gcc foo.cc' would do much the same
  827. as `gcc foo.c', but instead of using the C compiler named `cc1', `gcc'
  828. would use the C++ compiler (named `cc1plus').
  829.  
  830.    In a GNU Fortran installation, `gcc' recognizes Fortran source files
  831. by name just like it does C and C++ source files.  It knows to use the
  832. Fortran compiler named `f771', instead of `cc1' or `cc1plus', to
  833. compile Fortran files.
  834.  
  835.    Non-Fortran-related operation of `gcc' is generally unaffected by
  836. installing the GNU Fortran version of `gcc'.  However, without the
  837. installed version of `gcc' being the GNU Fortran version, `gcc' will
  838. not be able to compile and link Fortran programs--and since `g77' uses
  839. `gcc' to do most of the actual work, neither will `g77'!
  840.  
  841.    The `g77' command is essentially just a front-end for the `gcc'
  842. command.  Fortran users will normally use `g77' instead of `gcc',
  843. because `g77' knows how to specify the libraries needed to link with
  844. Fortran programs (`libg2c' and `lm').  `g77' can still compile and link
  845. programs and source files written in other languages, just like `gcc'.
  846.  
  847.    The command `g77 -v' is a quick way to display lots of version
  848. information for the various programs used to compile a typical
  849. preprocessed Fortran source file--this produces much more output than
  850. `gcc -v' currently does.  (If it produces an error message near the end
  851. of the output--diagnostics from the linker, usually `ld'--you might
  852. have an out-of-date `libf2c' that improperly handles complex
  853. arithmetic.)  In the output of this command, the line beginning `GNU
  854. Fortran Front End' identifies the version number of GNU Fortran;
  855. immediately preceding that line is a line identifying the version of
  856. `gcc' with which that version of `g77' was built.
  857.  
  858.    The `libf2c' library is distributed with GNU Fortran for the
  859. convenience of its users, but is not part of GNU Fortran.  It contains
  860. the procedures needed by Fortran programs while they are running.
  861.  
  862.    For example, while code generated by `g77' is likely to do
  863. additions, subtractions, and multiplications "in line"--in the actual
  864. compiled code--it is not likely to do trigonometric functions this way.
  865.  
  866.    Instead, operations like trigonometric functions are compiled by the
  867. `f771' compiler (invoked by `g77' when compiling Fortran code) into
  868. machine code that, when run, calls on functions in `libg2c', so
  869. `libg2c' must be linked with almost every useful program having any
  870. component compiled by GNU Fortran.  (As mentioned above, the `g77'
  871. command takes care of all this for you.)
  872.  
  873.    The `f771' program represents most of what is unique to GNU Fortran.
  874. While much of the `libg2c' component comes from the `libf2c' component
  875. of `f2c', a free Fortran-to-C converter distributed by Bellcore (AT&T),
  876. plus `libU77', provided by Dave Love, and the `g77' command is just a
  877. small front-end to `gcc', `f771' is a combination of two rather large
  878. chunks of code.
  879.  
  880.    One chunk is the so-called "GNU Back End", or GBE, which knows how
  881. to generate fast code for a wide variety of processors.  The same GBE
  882. is used by the C, C++, and Fortran compiler programs `cc1', `cc1plus',
  883. and `f771', plus others.  Often the GBE is referred to as the "gcc back
  884. end" or even just "gcc"--in this manual, the term GBE is used whenever
  885. the distinction is important.
  886.  
  887.    The other chunk of `f771' is the majority of what is unique about
  888. GNU Fortran--the code that knows how to interpret Fortran programs to
  889. determine what they are intending to do, and then communicate that
  890. knowledge to the GBE for actual compilation of those programs.  This
  891. chunk is called the "Fortran Front End" (FFE).  The `cc1' and `cc1plus'
  892. programs have their own front ends, for the C and C++ languages,
  893. respectively.  These fronts ends are responsible for diagnosing
  894. incorrect usage of their respective languages by the programs the
  895. process, and are responsible for most of the warnings about
  896. questionable constructs as well.  (The GBE handles producing some
  897. warnings, like those concerning possible references to undefined
  898. variables.)
  899.  
  900.    Because so much is shared among the compilers for various languages,
  901. much of the behavior and many of the user-selectable options for these
  902. compilers are similar.  For example, diagnostics (error messages and
  903. warnings) are similar in appearance; command-line options like `-Wall'
  904. have generally similar effects; and the quality of generated code (in
  905. terms of speed and size) is roughly similar (since that work is done by
  906. the shared GBE).
  907.  
  908. 
  909. File: g77.info,  Node: G77 and GCC,  Next: Invoking G77,  Prev: What is GNU Fortran?,  Up: Top
  910.  
  911. Compile Fortran, C, or Other Programs
  912. *************************************
  913.  
  914.    A GNU Fortran installation includes a modified version of the `gcc'
  915. command.
  916.  
  917.    In a non-Fortran installation, `gcc' recognizes C, C++, and
  918. Objective-C source files.
  919.  
  920.    In a GNU Fortran installation, `gcc' also recognizes Fortran source
  921. files and accepts Fortran-specific command-line options, plus some
  922. command-line options that are designed to cater to Fortran users but
  923. apply to other languages as well.
  924.  
  925.    *Note Compile C; C++; or Objective-C: (gcc)G++ and GCC, for
  926. information on the way different languages are handled by the GNU CC
  927. compiler (`gcc').
  928.  
  929.    Also provided as part of GNU Fortran is the `g77' command.  The
  930. `g77' command is designed to make compiling and linking Fortran
  931. programs somewhat easier than when using the `gcc' command for these
  932. tasks.  It does this by analyzing the command line somewhat and
  933. changing it appropriately before submitting it to the `gcc' command.
  934.  
  935.    Use the `-v' option with `g77' to see what is going on--the first
  936. line of output is the invocation of the `gcc' command.
  937.  
  938. 
  939. File: g77.info,  Node: Invoking G77,  Next: News,  Prev: G77 and GCC,  Up: Top
  940.  
  941. GNU Fortran Command Options
  942. ***************************
  943.  
  944.    The `g77' command supports all the options supported by the `gcc'
  945. command.  *Note GNU CC Command Options: (gcc)Invoking GCC, for
  946. information on the non-Fortran-specific aspects of the `gcc' command
  947. (and, therefore, the `g77' command).
  948.  
  949.    All `gcc' and `g77' options are accepted both by `g77' and by `gcc'
  950. (as well as any other drivers built at the same time, such as `g++'),
  951. since adding `g77' to the `gcc' distribution enables acceptance of
  952. `g77'-specific options by all of the relevant drivers.
  953.  
  954.    In some cases, options have positive and negative forms; the
  955. negative form of `-ffoo' would be `-fno-foo'.  This manual documents
  956. only one of these two forms, whichever one is not the default.
  957.  
  958. * Menu:
  959.  
  960. * Option Summary::      Brief list of all `g77' options,
  961.                         without explanations.
  962. * Overall Options::     Controlling the kind of output:
  963.                         an executable, object files, assembler files,
  964.                         or preprocessed source.
  965. * Shorthand Options::   Options that are shorthand for other options.
  966. * Fortran Dialect Options::  Controlling the variant of Fortran language
  967.                              compiled.
  968. * Warning Options::     How picky should the compiler be?
  969. * Debugging Options::   Symbol tables, measurements, and debugging dumps.
  970. * Optimize Options::    How much optimization?
  971. * Preprocessor Options:: Controlling header files and macro definitions.
  972.                          Also, getting dependency information for Make.
  973. * Directory Options::   Where to find header files and libraries.
  974.                         Where to find the compiler executable files.
  975. * Code Gen Options::    Specifying conventions for function calls, data layout
  976.                         and register usage.
  977. * Environment Variables:: Env vars that affect GNU Fortran.
  978.  
  979.